package top.zywork.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.zywork.dos.GoodsOrderDO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * GoodsOrderDAO数据访问接口<br/>
 *
 * 创建于2019-07-04<br/>
 *
 * @author http://zywork.top 王振宇
 * @version 1.0
 */
@Repository
public interface GoodsOrderDAO extends BaseDAO {

    @Override
    List<Object> listAllByCondition(@Param("query") Object queryObj);

    @Override
    List<Object> listPageByCondition(@Param("query") Object queryObj);

    @Override
    Long countByCondition(@Param("query") Object queryObj);

    /**
     * 根据订单号获取订单
     * @param orderNo
     * @return
     */
    GoodsOrderDO getByOrderNo(String orderNo);

    /**
     * 根据多个订单号计数
     * @param orderNos
     * @return
     */
    Long countOrderNos(String[] orderNos);

    /**
     * 根据多个订单号去计算总支付金额
     * @param orderNos
     * @return
     */
    BigDecimal calculateTotalAmount(String[] orderNos);

    /**
     * 根据订单号获取商家备注
     * @param orderId
     * @return
     */
    String getShopRemarkByOrderId(Long orderId);

    /**
     * 计算多个用户在指定时间段内创造的业绩总和
     * @param userIds 多个用户的id
     * @param orderStatus 需要计算业绩的订单状态
     * @param beginTime 计算业绩的开始时间
     * @param endTime 计算业绩的结束时间
     * @return
     */
    BigDecimal countAllAmount(Long[] userIds, Byte orderStatus, Date beginTime, Date endTime);
}
